import http.server
import socketserver
import json
import random

# 设置服务器的IP地址和端口号
server_ip = '127.0.0.1'  # 或者使用 'localhost' 也可以
server_port = 8001

# 创建一个自定义的请求处理程序，继承自 http.server.SimpleHTTPRequestHandler
class MyHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path.startswith('/getColorLayer'):
            # 解析 URL 查询参数
            query_params = self.parse_query_params(self.path)
            print("get request")
            # 检查是否包含参数 x 和 y
            if 'x' in query_params and 'y' in query_params:
                # 生成随机的十个数字
                random_numbers = [random.randint(1, 100) for _ in range(12)]

                # 响应数据，包括图片的URL和数组
                response_data = {
                    'image_url': 'random_image.png',  # 图片的 URL
                    'random_numbers': random_numbers  # 包含十个随机数字的数组
                }

                # 发送响应
                self.send_response(200)
                self.send_header('Content-type', 'application/json')
                self.end_headers()
                self.wfile.write(json.dumps(response_data).encode())
            else:
                # 如果缺少参数 x 和/或 y，返回错误消息
                self.send_response(400)
                self.send_header('Content-type', 'text/plain')
                self.end_headers()
                self.wfile.write(b'Missing x and/or y parameters in the request.')
        else:
            # 默认情况下，使用父类的处理方法
            super().do_GET()

    def parse_query_params(self, path):
        # 解析 URL 查询参数并返回一个字典
        query_params = {}
        query_string = path.split('?', 1)
        if len(query_string) > 1:
            query_string = query_string[1]
            params = query_string.split('&')
            for param in params:
                key, value = param.split('=')
                query_params[key] = value
        return query_params

# 创建多线程服务器并监听指定IP地址和端口号
class ThreadedHTTPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

with ThreadedHTTPServer((server_ip, server_port), MyHandler) as httpd:
    print(f"服务器已启动，监听 {server_ip}:{server_port}")
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    httpd.server_close()
